home *** CD-ROM | disk | FTP | other *** search
/ NeXT Enterprise Objects Framework 1.1 / NeXT Enterprise Objects Framework 1.1.iso / NextDeveloper / Examples / EnterpriseObjects / Validation / Validation.subproj / KeyValueValidation.m < prev    next >
Encoding:
Text File  |  1995-02-17  |  1.1 KB  |  35 lines

  1. #import "KeyValueValidation.h"
  2.  
  3. static NSDictionary *validateValuesInDictionary(id object, NSDictionary *values)
  4. {
  5.     NSEnumerator *editEnum = [values keyEnumerator];
  6.     NSMutableDictionary *errorDict = nil;
  7.     NSString *key;
  8.  
  9.     while (key = [editEnum nextObject]) {
  10.         // construct a selector and see if the have a validation method
  11.         id value = [values objectForKey:key];
  12.         NSString *methodName = [NSString stringWithFormat:@"validate%@:", [key capitalizedString]];
  13.         SEL selector = sel_getUid([methodName cString]);
  14.         NSString *errorMessage = nil;
  15.  
  16.         if (selector && [object respondsToSelector:selector]) {
  17.             errorMessage = [object perform:selector withObject:value];
  18.             if (errorMessage) {
  19.                 if (!errorDict)
  20.                     errorDict = [NSMutableDictionary dictionary];
  21.                 [errorDict setObject:errorMessage forKey:key];
  22.             }
  23.         }
  24.     }
  25.     return errorDict;
  26. }
  27.  
  28. @implementation NSObject (KeyValueValidation)
  29. - (NSDictionary *)validateValuesInDictionary:(NSDictionary *)values
  30. {
  31.     return validateValuesInDictionary(self, values);
  32. }
  33. @end
  34.  
  35.